package com.yqs.servlet; /**
 * @author Ye QS
 * @className ${NAME}
 * @description ${description}
 * @version 0.1
 * @date 2024/8/3 10:18
 * @since jdk11
 */

import com.yqs.entity.Dept;
import com.yqs.entity.Emp;
import com.yqs.mapper.EmpMapper;
import com.yqs.utils.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

// 定义一个名为EmpUpdateServlet的类，它继承自HttpServlet
@WebServlet("/empUpdate")
public class EmpUpdateServlet extends HttpServlet {

    // 处理GET请求的方法，这里重定向到POST请求的处理方法
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    // 处理POST请求的方法
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 从请求中获取员工ID，并转换为整数
        int empId = Integer.parseInt(request.getParameter("empId"));
        // 从请求中获取员工姓名
        String empName = request.getParameter("empName");
        // 从请求中获取员工工资，并转换为双精度浮点数
        double salary = Double.parseDouble(request.getParameter("salary"));
        // 从请求中获取部门ID，并转换为整数
        int deptId = Integer.parseInt(request.getParameter("deptId"));
        // 从请求中获取员工的入职日期字符串
        String hireDateString = request.getParameter("hireDate");
        // 创建日期格式化对象，用于将字符串转换为日期对象
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date hireDate = null;
        try {
            // 尝试将日期字符串转换为Date对象
            hireDate = dateFormat.parse(hireDateString);
        } catch (ParseException e) {
            // 如果转换失败，抛出运行时异常
            throw new RuntimeException(e);
        }
        // 创建Dept对象并设置部门ID
        Dept dept = new Dept();
        dept.setDeptId(deptId);
        // 创建Emp对象并设置员工信息
        Emp emp = new Emp();
        emp.setEmpId(empId);
        emp.setEmpName(empName);
        emp.setSalary(salary);
        emp.setHireDate(hireDate);
        emp.setDept(dept);
        // 获取SqlSession对象，它是MyBatis中用于执行数据库操作的对象
        SqlSession session = SqlSessionFactoryUtil.getSqlSession();
        // 通过SqlSession获取EmpMapper接口的实例，用于访问数据库中的员工数据
        EmpMapper mapper = session.getMapper(EmpMapper.class);
        // 调用EmpMapper的updateEmp方法更新员工信息，返回值表示更新的记录条数
        int i = mapper.updateEmp(emp);
        // 如果更新成功（即返回值大于0），打印成功信息并重定向到员工列表页面
        if (i > 0) {
            System.out.println("修改成功");
            response.sendRedirect("fuzzyEmpList.html");
        }
        // 注意：这里没有关闭SqlSession，应该在操作完成后关闭它以释放资源
    }
}
